/*
 * SystemState.h
 *
 *  Created on: 22 Aug 2011
 *      Author: Allan
 */

#ifndef SYSTEMSTATE_H_
#define SYSTEMSTATE_H_

// C++ includes
#include <string>
#include <vector>
using namespace std;

// Eigen includes
#include <Eigen/Core>
using namespace Eigen;

// GeoReact includes
#include "System.h"

class SystemState : public System
{
public:
	SystemState();
	
	SystemState(const System& system);
	
	SystemState(const System& system, double T, double P, const VectorXd& n);
	
	void
	SetState(double T, double P, const VectorXd& n);
	
	const double
	Get(const string& quantity) const;
	
	const double
	Get(const string& quantity, const string& species) const;
	
	void
	Print() const;
	
private:
	double T, P;
	
	VectorXd n, a, g;
};

#endif /* SYSTEMSTATE_H_ */
